import request from 'umi-request';
import { stringify } from 'qs';
import apiToken from '../../../config/apiToken';

/**
 *  API网址：https://www.free-api.com/
 */

/**
 * 查询小说
 * @param params
 * @returns {Promise<any>}
 */
export async function fatchArticle(params) {
  return request(`http://api.pingcc.cn/fiction/search/title/${stringify(params).title}/1/10`);
}

/**
 * 实施段子
 * @param  type	String	必填	指定查询类型，可选参数(all/video/image/gif/text)
           page	String	选填	页码(传0或者不传会随机推荐)
           count	String	选填	每页返回数量
 * @returns {Promise<any>}
 */
export async function fatchJoke(params) {
  return request(`https://api.apiopen.top/getJoke${stringify(params)}`);
}

/**
 * 音乐搜索
 * @param  name	String	必填	音乐名称
 * @returns {Promise<any>}
 */
export async function fatchMusic(params) {
  return request(`https://api.apiopen.top/searchMusic${stringify(params)}`);
}

/**
 * 随机头像输出
 * @param  sort	string	选填	选择输出分类[男，女，动漫男，动漫女]，为空随机输出
           format	string	选填	选择输出格式[json，images]
 * @returns {Promise<any>}
 */
export async function fatchAvatar(params) {
  return request(`https://api.uomg.com/api/rand.avatar${stringify(params)}`);
}

/**
 * 天气查询
 * @param  city	String	必填	要查询的城市
 * @returns {Promise<any>}
 */
export async function fatchWeather(params) {
  return request(`https://www.apiopen.top/weatherApi?${stringify(params)}`);
}

/**
 * 今日头条
 * @param  type	string	选填	加密的方式，
 * 获取热榜的 type ，默认 36k，所有列表：
 * zhihu 知乎热榜 weibo 微博热搜 weixin 微信 ‧ 24h热文榜 baidu 百度 ‧ 实时热点 toutiao
 * 今日头条 163 网易新闻 xl 新浪网 ‧ 热词排行榜 36k 36氪 ‧ 24小时热榜(默认) hitory
 * 历史上的今天 sspai 少数派 csdn **csdn **今日推荐 juejin 掘金热榜 bilibili 哔哩哔哩热榜 douyin
 * 抖音视频榜 52pojie 吾爱破解热榜 v2ex V2ex 热帖 hostloc 全球主机论坛热帖
 * @returns {Promise<any>}
 */
export async function fatchTopPoint(params) {
  return request(`https://v1.alapi.cn/api/tophub/get${stringify(params)}`);
}

/**
 *  API网址：https://www.alapi.cn/
 *  每天限制请求200次
 *  @param 【token = 73RX1DFMSzFYLeHU】
 */

/**
 * 土味情话
 * @param  token	string	请求token，用户中心获取。	用户中心获取token
           format	string	返回数据类型，json,text	json
 * @returns {Promise<any>}
 */
export async function fatchSweet() {
  return request(`https://v2.alapi.cn/api/qinghua?token=${apiToken.token}&format=json`);
}

/**
 * 能不能好好说话，缩写查询
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           abbr	true	string	要查询的缩写	yyds
 * @returns {Promise<any>}
 */
export async function fatchAbbr(params) {
  return request(`https://v2.alapi.cn/api/abbr?token=${apiToken.token}${stringify(params)}`);
}

/**
 * 网易云乐评
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           id	false	string	网易云歌曲ID，不填则随机返回一个乐评	1400256289
 * @returns
 * song_id	歌曲ID
   title	歌曲名称
   image	歌曲封面图片，已处理为 https 链接
   author	歌曲作者
   album	歌曲所属专辑
   description	歌曲描述
   mp3_url	歌曲地址
   pub_date	歌曲发行时间
   comment_id	评论ID
   comment_user_id	评论用户ID
   comment_nickname	评论用户昵称
   comment_avatar_url	评论用户头像地址
   comment_content	评论内容
   comment_pub_date	评论发表时间
 */
export async function fatchComment(params) {
  return request(`https://v2.alapi.cn/api/comment?token=${apiToken.token}`);
}

/**
 * 每日一个问题
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           date	true	date	可选,日期,默认当前天	2021-04-21
 * @returns {Promise<any>}
 */
export async function fatchOneProblem() {
  return request(`https://v2.alapi.cn/api/one/question?token=${apiToken.token}`);
}

/**
 * 心灵毒鸡汤
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           format	false	string	返回数据格式,支持json,text	json
 * @returns {Promise<any>}
 */
export async function fatchSoul() {
  return request(`https://v2.alapi.cn/api/soul?token=${apiToken.token}&format=json`);
}

/**
 * 藏头诗生成
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           keyword	true	string	藏字内容，2-8个字	我喜欢你
           num	false	int	诗句格式，5五言诗[默认]、7七言诗	5
           type		int	藏头位置，1藏头[默认]、2藏尾、3藏中、4递增、5递减	1
           rhyme			押韵类型，1双句一压[默认]、2双句押韵、3一三四押
 * @returns {Promise<any>}
 */
export async function fatchPoem(params) {
  return request(`https://v2.alapi.cn/api/ai/poem?token=${apiToken.token}&${stringify(params)}`);
}

/**
 * 智能对联
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           keyword	true	string	上联	天下第一
 * @returns {Promise<any>}
 */
export async function fatchCouplet(params) {
  return request(`https://v2.alapi.cn/api/ai/couplet?token=${apiToken.token}&${stringify(params)}`);
}

/**
 * 成语字典
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           word	true	string	查询的关键字	一
 * @returns {Promise<any>}
 */
export async function fetchIdiom(params) {
  return request(`https://v2.alapi.cn/api/idiom?token=${apiToken.token}&${stringify(params)}`);
}

/**
 * ACG 图片
   ACG 图片,指的是动画、漫画、游戏之类的图片。 ACG 接口 可以随机返回一张图片
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           format	true	string	返回数据类型。可选：json ，默认直接返回图片	json
 * @returns {Promise<any>}
 */
export async function fatchAcg() {
  return request(`https://v2.alapi.cn/api/acg?token=${apiToken.token}&format=json`);
}

/**
 * 二维码生成
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           content	true	string	要生成的二维码内容，生成的内容最好urlencode 编码一下	https://www.alapi.cn
           size	false	int	二维码大小	150
           format		string	二维码图片格式png,或者svg	png
           return		string	返回格式,默认返回图片二进制，支持json,raw	json
           raw 直接返回图片，就是相当于图片url，可以直接在 img 里面引用
 * @returns {Promise<any>}
 */
export async function getQr(params) {
  return request(`https://v2.alapi.cn/api/qr?token=${apiToken.token}&${stringify(params)}`);
}

/**
 * 历史上的今天
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           monthday	false	string	月份和日期,填写了这个参数，month 就不用填写了	0520
           month		int	月份	05
           day		int	日期	20
           page		int	分页	1
 * @returns id	id，获取历史上的几天详细文章数据需要用到
           title	标题
           date	完整日期
           year	年份
           month	月份
           day	日期
           monthday	月份日期
           desc	简单描述
 */
export async function fetchEventHistory(params) {
  return request(`https://v2.alapi.cn/api/eventHistory?token=${apiToken.token}&${stringify(params)}`);
}

/**
 * 获取头像
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           email	true	string	邮箱账号	yeliulee@qq.com
           size	false	int	头像的尺寸，默认 100	100
 * @returns
 */
export async function getQQAvatar(params) {
  return request(`https://v2.alapi.cn/api/avatar?token=${apiToken.token}&${stringify(params)}`);
}

/**
 * 表情包斗图
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           keyword	true	string	表情包搜索关键字	哈哈
           page		int	分页，默认1	1
           type		int	表情包来源,支持1-7，推荐7	7
 * @returns data	表情包图片链接
 */
export async function getDouTu(params) {
  return request(`https://v2.alapi.cn/api/doutu?token=${apiToken.token}&${stringify(params)}`);
}

/**
 * 图片上传图床
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           image	true	file	要上传的图片，二进制格式
           type	true	string	上传接口类型，默认 alapi	alpai
           【type 是要上传图库的类型，默认是 alapi
           目前支持 hulu,sogou,sohu,baidu,tencent 等，
           可通过 /api/image/type 获取所有支持的类型】
           base64	true	string	base64 格式的图片，image 和 base64 二选一传输
 * @returns data	表情包图片链接
 */
export async function uploadImg(params) {
  return request(`https://v2.alapi.cn/api/image`, {
    method: 'POST',
    data: {
      ...params
    }
  });
}

/**
 * 每日60秒早报
 * @param  token	true	string	请求token，用户中心获取。	用户中心获取token
           format	true	string	返回格式，json,image	json
 * @returns data	表情包图片链接
 */
export async function get60S() {
  return request(`https://v2.alapi.cn/api/zaobao?token=${apiToken.token}&format=json`);
}

/**
 * API网址：https://www.apishop.net/#/api/
 * @param 【apiKey = 8hJR65S89dee375f77a25ca19ba12c2a25e029aed68d252】
 */

/**
 * 快递物流查询
 * @param  apiKey	[long]	是	apiKey，申请数据后可在控制台查看
           expressNumber	[text]	是	快递单号；其中顺丰的运单号输入如下“运单号:收件人或寄件人手机号后四位”，例如：123456789:1234
           expressType	[text]	否	快递公司，不填默认自动识别

 * @returns  statusCode	[text]	是	状态码，包括系统级状态码以及接口状态码，详情参考状态码文档
             desc	[text]	是	状态码说明
             result	[text]	是	接口的返回信息，数组形式
 */
export async function getExpressInfo(params) {
  return request(`https://api.apishop.net/common/express/getExpressInfo?apiKey=${apiToken.apiKey}&${stringify(params)}`);
}

/**
 * 周公解梦
 */
export async function searchDream(params) {
  return request(`https://api.apishop.net/common/dream/searchDreamDetail?apiKey=${apiToken.apiKey}&${stringify(params)}`);
}

/**
 * 查询未来15天的天气
 */
export async function getWeather(params) {
  return request(`https://api.apishop.net/common/weather/get15DaysWeatherByArea?apiKey=${apiToken.apiKey}&${stringify(params)}`);
}

/**
 * 搜索歌曲
 * @param keyword	是	string	歌曲/歌手：需urlencode
         key	是	string	访问令牌 access_token
         type	否	string	搜索类型：默认qq
         page	否	int	页码： 默认第一页
         limit	否	int	显示条数：默认每页10条
 */
export async function searchMusic(params) {
  return request(`http://api.lmwljz.com/index/search`, {
    method: 'POST',
    data: {
      ...params
    }
  });
}

